#ifndef TARGETTASK_H
#define TARGETTASK_H


#include "../config/globalvariables.h"
#include "../config/constvariable.h"
#include <QReadWriteLock>
#include <QString>
#include <QObject>
#include <QDebug>
#include "../Tpkg/checkutils.h"
#include <cmath>

class TargetTask : QObject
{
    Q_OBJECT
public:
    explicit TargetTask(QObject *parent = nullptr);

    ~TargetTask();

    // OnlyAdd
    //
    //	@Desc: 添加靶标状态
    //	@param ID
    //	@param targetState
    void OnlyAdd(quint8 ID, quint8 targetState);

    // ToUnconnected
    //
    //	@Desc: 靶标断开连接
    //	@param ID
    void ToUnconnected(int ID);

    // Update
    //
    //	@Desc: 更新靶标状态
    //	@param ID
    //	@param targetState
    void Update(int ID,int targetState);

    // DeleteVoltage
    //
    //	@Desc: 删除电量
    //	@param ID
    void DeleteVoltage(int ID);

    // UpdateVoltage
    //
    //	@Desc: 更新电量
    //	@param ID
    //	@param v
    void UpdateVoltage(int ID,double v);

    // UpdateVoltage
    //
    //	@Desc: 获取电量
    //	@param ID
    double getVoltage(int ID);

    // UpdateVoltage
    //
    //	@Desc: 管理定时器
    //	@param ID
    void DeleteTimer(int ID);

    // UpdateSoundSpeed
    //
    //	@Desc: 更新声速
    //	@param temperature
    void UpdateSoundSpeed(double temperature);

    //固定回复
    // CreateE0
    //
    //	@Desc: 脱靶幅度过大过滤回发
    //	@param id
    //	@return string
    QString CreateE0(int id);

    // CreateF0
    //
    //	@Desc: 脱靶回发
    //	@param id
    //	@return string
    QString CreateF0(int id);

    // Create00
    //
    //	@Desc: 校准回发
    //	@param id
    //	@return string
    QString Create00(int id);

    // CreateFE
    //
    //		Deprecated
    //	 @Desc:
    //	 @param id
    //	 @return string
    QString CreateFE(int id);

    // creatSpecialCommand
    //
    //	@Desc: 抽象出来的数据生成方法
    //	@param id
    //	@param command
    //	@return string
    QString creatSpecialCommand(int id, quint16 command);

    // CommonTargetDataMsg
    //
    //	@Desc: 抽象出来的数据生成方法
    //	@param ID
    //	@param sequence
    //	@param cnAndDir
    //	@param xh
    //	@param xl
    //	@param yh
    //	@return QString
    QString CommonTargetDataMsg(int ID, int sequence, int cnAndDir, int xh, int xl, int yh, int yl);

    // GetUserIdByAddr
    //
    //	@Desc: 获取用户ID
    //	@param addr
    //	@return long long int
    long long int GetUserIdByAddr(int addr);

    // Binding
    //
    //	@Desc: 靶标绑定人员信息
    //	@param addr
    //	@param userID
    void Binding(int addr, long long userID);

    // UntieAll
    //
    //	@Desc: 删除所有绑定信息
    void UntieAll();

    QByteArray structToJson(const Send_Info &sendDataInfo);

};

#endif // TARGETTASK_H
